package com.zjsru.plan2024.oneday;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 2860. 让所有学生保持开心的分组方法数
 * @Author: cookLee
 * @Date: 2024-09-04
 */
public class CountWays2 {

    /**
     * 这位学生被选中，并且被选中的学生人数 严格大于 nums[i] 。
     * 这位学生没有被选中，并且被选中的学生人数 严格小于 nums[i] 。
     * \
     * 输入：nums = [6,0,3,3,6,7,2,7]
     * 输出：3
     * 解释：
     * 存在三种可行的方法：
     * 班主任选中下标为 1 的学生形成一组。
     * 班主任选中下标为 1、2、3、6 的学生形成一组。
     * 班主任选中所有学生形成一组。
     * \
     * @param args
     */
    public static void main(String[] args) {
        CountWays2 countWays = new CountWays2();
        List<Integer> list = Arrays.asList(6, 0, 3, 3, 6, 7, 2, 7);
        System.out.println(countWays.countWays(list));
    }

    /**
     * @param nums
     * @return int
     */
    public int countWays(List<Integer> nums) {
        int ans = 0;
        Collections.sort(nums);
        int len = nums.size();
        //i即是逐步增加的选中人数
        for (int i = 0; i <= len; i++) {
            //判断可满足选中数字，因为是排序过后，可以直接continue到不满足条件为止
            if (i > 0 && i <= nums.get(i - 1)) {
                continue;
            }
            //判断未选中的数字
            if (i < len && i >= nums.get(i)) {
                continue;
            }
            ans++;
        }
        return ans;
    }



}
